Computer systems, as with other operating environments, have found numerous applications in an industrial automation environment and can be found ubiquitously employed throughout, e.g., to control the operation of a device, machine, process, and the like. However, rather than entering commands though a single interface, the size of the operation being controlled may require an operator to be positioned at a plurality of locations (e.g., operator stations) to facilitate full understanding and operation of the machine as the machine runs through its series of operations in accord with the process requirements being conducted therewith.
For example, a cold chamber die casting machine with a locking force rated in the thousands of tons can be of a considerable size requiring an operator to position themselves in a number of locations with respect to the die casting machine during operation, such as at the furnace during loading of liquid metal into the shot sleeve, by an extraction mechanism (e.g., a robot) during removal of a casting, by the spray system during spraying of the die cavity with lubricant, etc. Similar requirements can occur with a large forging press, sheet metal press, and other machines of such scale that an operator cannot effectively review operation of the machine from a singular location. Alternatively, a manufacturing process may comprise of a plurality of machines connected by material handling devices (e.g., conveyors) and a number of operator stations are located throughout the manufacturing process enabling an operator to control the process from a number of vantage points. Further, rather than the operator controlling the machine from a single interface (e.g., a human machine interface (HMI), graphical user interface (GUI), terminal, and the like), a plurality of interfaces may be associated with the machine, e.g., an interface located at each of the operator stations. During operation of a machine, the operator may generate control commands from a first interface and then move on to a second interface and control the machine from there, and subsequently move to a third interface and further control the machine from the third interface.
A variety of control software is available to control machines with some code languages and code types being of open source and others being proprietary to a particular manufacturer (e.g., manufacturer of industrial equipment). Further, there are different ways of controlling a machine based upon capturing and transmitting data, where the data can be forwarded from an interface to a controller, or a controller can request data (e.g., by polling or other sequential and non-sequential manners), and the like. However, a situation can arise where control data is received from a plurality of interfaces concurrently or in a sequential manner. For example, machine control may be performed from any of three interfaces associated with a controller, where, for example, the control process is a binary one such as control of a jog operation, with a data value of “0” equating to perform “no jog” operation, and a data value of “1” equating to perform “jog” operation.
A jog process can involve an operator initiating a jog motion to facilitate intermittent motion of a machine component with respect to a work piece, datum, or the like. For example, positioning of a die in a die casting machine, locating a machine head with respect to a work piece, etc. Rather than being a command for continuous movement of a component, e.g., placement of a machine head, a jog command is a command resulting in a predefined amount of displacement (e.g., motion) for each generation of a jog request. For example, pressing of a “move” button can cause a machine head to move continuously in a certain direction while the move button is pressed. However, a “jog” button can be programmed such that only a predefined degree of displacement is effected for a single press of the button and the button has to be “released” (e.g., finger pressure removed from button) before the button can be re-pressed for the next jog request to be effected. For example, a machine can be configured, such that when the operator executes (e.g., presses) the jog button the machine head travels a prescribed distance, e.g., ten thousands of an inch, one millimeter, 10 microns, etc.
However, if signals are being received from a plurality of interfaces a problem can occur where a controller, associated with the plurality of interfaces, is using a single jog status field to determine whether a machine jog is to be performed. For example, in a situation where jog request signals are being generated by any or all of three interfaces coupled to a controller, and the jog request signals each update a single jog status field, then a jog status received from a first interface can be overwritten by a jog status subsequently received from a second interface. In this scenario, a situation can occur where a Jog signal is received from interface #1, but a subsequent no jog signal is received from interface #2. Upon receiving a jog signal from interface #1 a jog status field is set to a value of “1”, however, upon receiving the subsequent no jog signal from interface #2, the jog status field is set to a value of “0”. Given that the no jog signal received from interface #2 is subsequent to the jog signal received from interface #1, the interface #1 signal is overwritten by the interface #2 signal, and when the jog status field is accessed, a value of “0” is read, and no machine jog is performed, even though the operator had activated a jog from interface #1. Hence, in a situation where a plurality of interfaces are writing data, such as jog data signals, at a rate sufficient to support machine operations, and the last setting of a jog status field is continually read as being set to “0”, perform no jog, then no matter what the values were applied to the jog status field between a prior reading of the jog status field and a subsequent reading of the jog status field, a controller considers the value of the jog status field to have continually been set to “0” and no jog is performed even though an operator at interface #3 is pressing the jog button.
For the sake of readability an interface, HMI, GUI, and the like are referred to as a interface, however, it is to be appreciated that the term interface relates to any device, machine, component, software, etc., facilitating communication between an entity controlling an operation and a device, machine, component, software, etc., effecting or performing the operation.